Skip to content

Novice-first redesign: Connect page, Rede Privada, VPN install flow#21

Open
bigbruno wants to merge 47 commits into
mainfrom
feat/connect-page-novice-redesign
Open

Novice-first redesign: Connect page, Rede Privada, VPN install flow#21
bigbruno wants to merge 47 commits into
mainfrom
feat/connect-page-novice-redesign

Conversation

@bigbruno

Copy link
Copy Markdown
Member

Summary

Reduce cognitive load and fix real blockers so a non-technical user can connect end-to-end.

Connect page (guest_view.py)

  • Fix host-list clipping: empty state rendered outside the height-capped scroller; list margins so card corners aren't cut.
  • Discovery-first, single column (drop side helper card); fixed guidance subtitle (LAN/Private Network → host appears automatically).
  • Intent-branched empty state routes the novice to the real unlock: Configurar Rede Privada (highlighted), PIN, or Manual (advanced) — plain language, no jargon.
  • Client settings collapsed into an "Ajustar qualidade" expander with a live summary.

Rede Privada (main_window.py, private_network_view.py)

  • Selector: plain-language role framing + comparison table collapsed behind a disclosure.
  • Tailscale form: prominent "Sign in with browser"; auth key behind an advanced disclosure.
  • Install flow: when a VPN package is missing, show only an explicit Install button (pacman via bigsudo + service enable), no connect options; on success the page rebuilds to the connect view and the status footer refreshes. No pacman → link to the official install page.
  • Tailscale install switched from AUR/yay to pacman.
  • SystemCheck: has_pacman, generic flatpak_app_id detection, tailscale_cmd (native or flatpak run); has_tailscale/has_zerotier now recognise a Flatpak install.

Also (related fixes carried in)

  • Discovery filters virtual interfaces (veth/docker/br-) and dedupes link-local.
  • Performance monitor no longer plots synthetic 0ms/60fps/Unlimited metrics with no guest connected.
  • Host info shows local IPs in clear (globals stay masked); advanced-settings dialog widened past the 600px clamp.

Tests / verification

  • New static a11y/layout guards (tests/test_connect_redesign_regressions.py) + network filter tests; full suite green (113 passed), ruff + shellcheck clean.
  • Verified live on a test VM (KDE Plasma 6) via screenshots for every changed surface, including an end-to-end Tailscale install (pacman → service active → UI rebuilt to connect view).
  • New PT strings filled; CI auto-translator covers the rest on push.

Spec + plan: docs/superpowers/.

https://claude.ai/code/session_01DhGCL133apRAwBMk6dktHC

bigbruno added 17 commits June 25, 2026 05:09
…VPN flow

- per-provider dependency check (tailscale/zerotier binary, headscale -> docker)
- form shows install status banner; primary button becomes Install-and-connect when missing
- selector cards show Installed / Will be installed badge
- pt translations

Claude-Session: https://claude.ai/code/session_01DhGCL133apRAwBMk6dktHC
…atpak; manual fallback

- missing package -> only an explicit Install button (pacman via bigsudo), no connect options
- install-vpn.sh: pacman -S + enable service (tailscale/zerotier/headscale->docker)
- SystemCheck: has_pacman, generic flatpak_app_id detection, tailscale_cmd (native or flatpak run)
- has_tailscale/has_zerotier now recognise a Flatpak install
- on success: rebuild to connect view + refresh status; no pacman -> link to official install
- pt translations

Claude-Session: https://claude.ai/code/session_01DhGCL133apRAwBMk6dktHC
Root (bigsudo) cannot open a desktop browser. Capture the login URL from
'tailscale up', emit it as BRP_DATA LOGIN_URL, and open it in the user's
session via open_uri. Verified live: Brave opens as user with the auth URL.

Claude-Session: https://claude.ai/code/session_01DhGCL133apRAwBMk6dktHC
…vation)

pkexec (polkit) works on any distro with a polkit agent; matches the existing
pkexec usage for drop_guest/firewall. Absolute program paths (/usr/bin/env,
/usr/bin/systemctl, /usr/bin/tailscale). Verified live: install + browser login
elevate via pkexec and open the auth URL in the user's browser.

Claude-Session: https://claude.ai/code/session_01DhGCL133apRAwBMk6dktHC
@sonarqubecloud

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
C Security Rating on New Code (required ≥ A)
D Reliability Rating on New Code (required ≥ A)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant